import type { AxiosRequestConfig, AxiosResponse } from 'axios'

/**
 * requestSuccessFn：用于在请求发生成功之前对请求配置进行处理的函数
 * requestFailureFn：用于在请求发生失败时对错误进行处理的函数
 * responseSuccessFn：用于在响应成功返回后对响应数据进行处理的函数
 * responseFailureFn：用于在响应返回失败时对错误进行处理的函数
 */
// 针对AxiosRequestConfig配置进行扩展
export interface IInterceptors<T = AxiosResponse> {
    requestSuccessFn?: (config: AxiosRequestConfig) => any
    requestFailureFn?: (err: any) => any
    responseSuccessFn?: (res: T) => T
    responseFailureFn?: (err: any) => any
}

/**
 * 定义一个接口 IRequestConfig 接口，它继承了 AxiosRequestConfig 类型。
 * 这个接口可以作为 Axios 请求的配置对象，并可选的包含 interceptors 属性，该属性的类型时 IRequestConfig。
 * 通过将拦截器配置传递给 interceptors 属性，可以对请求进行扩展和自定义拦截处理。
 */ 
export interface IRequestConfig<T = AxiosResponse> extends AxiosRequestConfig {
    interceptors?: IInterceptors<T>
}

/**
 * 上述代码的意图是为 Axios 请求配置提供一个扩展接口，
 * 使得可以添加自定义的请求和响应拦截器，以便在请求和响应过程中进行额外的处理 
 */ 
